<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');

if(!function_exists("transform")) {
function transform($num,$dictionary){
	//global $dictionary;
    if ($num > 0 && $num < 160) {
        return chr($num);
    }
    elseif ($num < -20319 || $num > -10247) {
        return "";
    }
    else {
        for ($i = count($dictionary) - 1; $i >= 0; $i--) {
            if ($dictionary[$i][1] <= $num) {
                break;
            }
        }
        return substr($dictionary[$i][0],0,1);
    }
}
}
if(!function_exists("zh2pingyin")) {
function zh2pinyin($string) {
$dictionary = array(
    array("a", -20319),
    array("ai", -20317),
    array("an", -20304),
    array("ang", -20295),
    array("ao", -20292),
    array("ba", -20283),
    array("bai", -20265),
    array("ban", -20257),
    array("bang", -20242),
    array("bao", -20230),
    array("bei", -20051),
    array("ben", -20036),
    array("beng", -20032),
    array("bi", -20026),
    array("bian", -20002),
    array("biao", -19990),
    array("bie", -19986),
    array("bin", -19982),
    array("bing", -19976),
    array("bo", -19805),
    array("bu", -19784),
    array("ca", -19775),
    array("cai", -19774),
    array("can", -19763),
    array("cang", -19756),
    array("cao", -19751),
    array("ce", -19746),
    array("ceng", -19741),
    array("cha", -19739),
    array("chai", -19728),
    array("chan", -19725),
    array("chang", -19715),
    array("chao", -19540),
    array("che", -19531),
    array("chen", -19525),
    array("cheng", -19515),
    array("chi", -19500),
    array("chong", -19484),
    array("chou", -19479),
    array("chu", -19467),
    array("chuai", -19289),
    array("chuan", -19288),
    array("chuang", -19281),
    array("chui", -19275),
    array("chun", -19270),
    array("chuo", -19263),
    array("ci", -19261),
    array("cong", -19249),
    array("cou", -19243),
    array("cu", -19242),
    array("cuan", -19238),
    array("cui", -19235),
    array("cun", -19227),
    array("cuo", -19224),
    array("da", -19218),
    array("dai", -19212),
    array("dan", -19038),
    array("dang", -19023),
    array("dao", -19018),
    array("de", -19006),
    array("deng", -19003),
    array("di", -18996),
    array("dian", -18977),
    array("diao", -18961),
    array("die", -18952),
    array("ding", -18783),
    array("diu", -18774),
    array("dong", -18773),
    array("dou", -18763),
    array("du", -18756),
    array("duan", -18741),
    array("dui", -18735),
    array("dun", -18731),
    array("duo", -18722),
    array("e", -18710),
    array("en", -18697),
    array("er", -18696),
    array("fa", -18526),
    array("fan", -18518),
    array("fang", -18501),
    array("fei", -18490),
    array("fen", -18478),
    array("feng", -18463),
    array("fo", -18448),
    array("fou", -18447),
    array("fu", -18446),
    array("ga", -18239),
    array("gai", -18237),
    array("gan", -18231),
    array("gang", -18220),
    array("gao", -18211),
    array("ge", -18201),
    array("gei", -18184),
    array("gen", -18183),
    array("geng", -18181),
    array("gong", -18012),
    array("gou", -17997),
    array("gu", -17988),
    array("gua", -17970),
    array("guai", -17964),
    array("guan", -17961),
    array("guang", -17950),
    array("gui", -17947),
    array("gun", -17931),
    array("guo", -17928),
    array("ha", -17922),
    array("hai", -17759),
    array("han", -17752),
    array("hang", -17733),
    array("hao", -17730),
    array("he", -17721),
    array("hei", -17703),
    array("hen", -17701),
    array("heng", -17697),
    array("hong", -17692),
    array("hou", -17683),
    array("hu", -17676),
    array("hua", -17496),
    array("huai", -17487),
    array("huan", -17482),
    array("huang", -17468),
    array("hui", -17454),
    array("hun", -17433),
    array("huo", -17427),
    array("ji", -17417),
    array("jia", -17202),
    array("jian", -17185),
    array("jiang", -16983),
    array("jiao", -16970),
    array("jie", -16942),
    array("jin", -16915),
    array("jing", -16733),
    array("jiong", -16708),
    array("jiu", -16706),
    array("ju", -16689),
    array("juan", -16664),
    array("jue", -16657),
    array("jun", -16647),
    array("ka", -16474),
    array("kai", -16470),
    array("kan", -16465),
    array("kang", -16459),
    array("kao", -16452),
    array("ke", -16448),
    array("ken", -16433),
    array("keng", -16429),
    array("kong", -16427),
    array("kou", -16423),
    array("ku", -16419),
    array("kua", -16412),
    array("kuai", -16407),
    array("kuan", -16403),
    array("kuang", -16401),
    array("kui", -16393),
    array("kun", -16220),
    array("kuo", -16216),
    array("la", -16212),
    array("lai", -16205),
    array("lan", -16202),
    array("lang", -16187),
    array("lao", -16180),
    array("le", -16171),
    array("lei", -16169),
    array("leng", -16158),
    array("li", -16155),
    array("lia", -15959),
    array("lian", -15958),
    array("liang", -15944),
    array("liao", -15933),
    array("lie", -15920),
    array("lin", -15915),
    array("ling", -15903),
    array("liu", -15889),
    array("long", -15878),
    array("lou", -15707),
    array("lu", -15701),
    array("lv", -15681),
    array("luan", -15667),
    array("lue", -15661),
    array("lun", -15659),
    array("luo", -15652),
    array("ma", -15640),
    array("mai", -15631),
    array("man", -15625),
    array("mang", -15454),
    array("mao", -15448),
    array("me", -15436),
    array("mei", -15435),
    array("men", -15419),
    array("meng", -15416),
    array("mi", -15408),
    array("mian", -15394),
    array("miao", -15385),
    array("mie", -15377),
    array("min", -15375),
    array("ming", -15369),
    array("miu", -15363),
    array("mo", -15362),
    array("mou", -15183),
    array("mu", -15180),
    array("na", -15165),
    array("nai", -15158),
    array("nan", -15153),
    array("nang", -15150),
    array("nao", -15149),
    array("ne", -15144),
    array("nei", -15143),
    array("nen", -15141),
    array("neng", -15140),
    array("ni", -15139),
    array("nian", -15128),
    array("niang", -15121),
    array("niao", -15119),
    array("nie", -15117),
    array("nin", -15110),
    array("ning", -15109),
    array("niu", -14941),
    array("nong", -14937),
    array("nu", -14933),
    array("nv", -14930),
    array("nuan", -14929),
    array("nue", -14928),
    array("nuo", -14926),
    array("o", -14922),
    array("ou", -14921),
    array("pa", -14914),
    array("pai", -14908),
    array("pan", -14902),
    array("pang", -14894),
    array("pao", -14889),
    array("pei", -14882),
    array("pen", -14873),
    array("peng", -14871),
    array("pi", -14857),
    array("pian", -14678),
    array("piao", -14674),
    array("pie", -14670),
    array("pin", -14668),
    array("ping", -14663),
    array("po", -14654),
    array("pu", -14645),
    array("qi", -14630),
    array("qia", -14594),
    array("qian", -14429),
    array("qiang", -14407),
    array("qiao", -14399),
    array("qie", -14384),
    array("qin", -14379),
    array("qing", -14368),
    array("qiong", -14355),
    array("qiu", -14353),
    array("qu", -14345),
    array("quan", -14170),
    array("que", -14159),
    array("qun", -14151),
    array("ran", -14149),
    array("rang", -14145),
    array("rao", -14140),
    array("re", -14137),
    array("ren", -14135),
    array("reng", -14125),
    array("ri", -14123),
    array("rong", -14122),
    array("rou", -14112),
    array("ru", -14109),
    array("ruan", -14099),
    array("rui", -14097),
    array("run", -14094),
    array("ruo", -14092),
    array("sa", -14090),
    array("sai", -14087),
    array("san", -14083),
    array("sang", -13917),
    array("sao", -13914),
    array("se", -13910),
    array("sen", -13907),
    array("seng", -13906),
    array("sha", -13905),
    array("shai", -13896),
    array("shan", -13894),
    array("shang", -13878),
    array("shao", -13870),
    array("she", -13859),
    array("shen", -13847),
    array("sheng", -13831),
    array("shi", -13658),
    array("shou", -13611),
    array("shu", -13601),
    array("shua", -13406),
    array("shuai", -13404),
    array("shuan", -13400),
    array("shuang", -13398),
    array("shui", -13395),
    array("shun", -13391),
    array("shuo", -13387),
    array("si", -13383),
    array("song", -13367),
    array("sou", -13359),
    array("su", -13356),
    array("suan", -13343),
    array("sui", -13340),
    array("sun", -13329),
    array("suo", -13326),
    array("ta", -13318),
    array("tai", -13147),
    array("tan", -13138),
    array("tang", -13120),
    array("tao", -13107),
    array("te", -13096),
    array("teng", -13095),
    array("ti", -13091),
    array("tian", -13076),
    array("tiao", -13068),
    array("tie", -13063),
    array("ting", -13060),
    array("tong", -12888),
    array("tou", -12875),
    array("tu", -12871),
    array("tuan", -12860),
    array("tui", -12858),
    array("tun", -12852),
    array("tuo", -12849),
    array("wa", -12838),
    array("wai", -12831),
    array("wan", -12829),
    array("wang", -12812),
    array("wei", -12802),
    array("wen", -12607),
    array("weng", -12597),
    array("wo", -12594),
    array("wu", -12585),
    array("xi", -12556),
    array("xia", -12359),
    array("xian", -12346),
    array("xiang", -12320),
    array("xiao", -12300),
    array("xie", -12120),
    array("xin", -12099),
    array("xing", -12089),
    array("xiong", -12074),
    array("xiu", -12067),
    array("xu", -12058),
    array("xuan", -12039),
    array("xue", -11867),
    array("xun", -11861),
    array("ya", -11847),
    array("yan", -11831),
    array("yang", -11798),
    array("yao", -11781),
    array("ye", -11604),
    array("yi", -11589),
    array("yin", -11536),
    array("ying", -11358),
    array("yo", -11340),
    array("yong", -11339),
    array("you", -11324),
    array("yu", -11303),
    array("yuan", -11097),
    array("yue", -11077),
    array("yun", -11067),
    array("za", -11055),
    array("zai", -11052),
    array("zan", -11045),
    array("zang", -11041),
    array("zao", -11038),
    array("ze", -11024),
    array("zei", -11020),
    array("zen", -11019),
    array("zeng", -11018),
    array("zha", -11014),
    array("zhai", -10838),
    array("zhan", -10832),
    array("zhang", -10815),
    array("zhao", -10800),
    array("zhe", -10790),
    array("zhen", -10780),
    array("zheng", -10764),
    array("zhi", -10587),
    array("zhong", -10544),
    array("zhou", -10533),
    array("zhu", -10519),
    array("zhua", -10331),
    array("zhuai", -10329),
    array("zhuan", -10328),
    array("zhuang", -10322),
    array("zhui", -10315),
    array("zhun", -10309),
    array("zhuo", -10307),
    array("zi", -10296),
    array("zong", -10281),
    array("zou", -10274),
    array("zu", -10270),
    array("zuan", -10262),
    array("zui", -10260),
    array("zun", -10256),
    array("zuo", -10254)
);
    $output = "";
    for ($i=0; $i < strlen($string); $i++) {
        $letter = ord(substr($string, $i, 1));
        if($letter > 160){
            $tmp = ord(substr($string, ++$i, 1));
            $letter = $letter * 256 + $tmp - 65536;
        }
        $output .= transform($letter,$dictionary);
    }
    return $output;
}
}
?>